package com.ftg.learn.chapter09;

/**
 * @author KangJx
 * @date 2021/7/15
 */
public class Question {

//    2.定义数组，存放5个学生的成绩【成绩值自己设定】，将成绩从大到小排序，获得成绩之和，平均成绩，最小成绩，最大成绩

    public void questionTwo(double[] arr){
        System.out.println("排序以后的数组");
        double[] score = order(arr);
        for(double d : score){
            System.out.print(d+"\t");
        }

        System.out.println("成绩之和");
        System.out.println(sum(arr));
        System.out.println("平均成绩");
        System.out.println(avg(arr));
        System.out.println("最小成绩");
        System.out.println(min(score));

        System.out.println("最大成绩");
        System.out.println(max(score));

    }

    /**
     * 求和
     * @param arr
     * @return
     */
    public double sum(double[] arr){
        double sum = 0;
        for(int i =0,j = arr.length - 1;i < j;i++,j--){
            sum += (arr[i] + arr[j]);
        }
        sum = (arr.length % 2 == 0)?sum:sum+arr[arr.length / 2];
        return sum ;
    }

    /**
     * 平均值
     * @param arr
     * @return
     */
    public double avg(double[] arr){
        double sum = sum(arr);
        return sum / arr.length;
    }


    /**
     * 最大值
     * @param arr 有序的降序数组
     * @return
     */
    public double max(double[] arr){
        return arr[0];
    }

    /**
     * 最大值
     * @param arr 有序的降序数组
     * @return
     */
    public double min(double[] arr){
        return arr[arr.length - 1];
    }

    private double[] order(double[] score){
        for(int i = 0,len = score.length;i < len;i++){
            for(int j = 0;j < len - 1 - i;j++){
                if(score[j] < score[j + 1]){
                    double t = score[j];
                    score[j] = score[j + 1];
                    score[j+1] = t;
                }
            }
        }
        return score;
    }

}
